#pragma once 

#include<iostream>

#include<list>

namespace MyQueue{

  template<class T,class Container = std::list<T>>
  class queue{
    public:
      void push(const T& val){
        _con.push_back(val);
      }

      void pop(){
        _con.pop_front();
      }

      const T& back()const{
        return _con.back();
      }

      const T& front()const{
        return _con.front();
      }

      size_t size(){
        return _con.size();
      }

      bool empty(){
        return _con.empty();
      }

    private:
      Container _con;
  };


  
}
